from collections import defaultdict

class Solution:
    def maximumLength(self, S: str) -> int:
        # 将字符串转换为字符数组
        s = list(S)
        # 创建一个字典，每个键对应一个字母，每个值是一个列表，用于存储该字母连续出现的长度
        groups = defaultdict(list)
        cnt = 0  # 计数器，用于计算一个字符连续出现的次数

        # 遍历字符数组
        for i in range(len(s)):
            cnt += 1
            # 当字符改变或到达字符串末尾时，将计数器的值存入相应字母的列表
            if i == len(s) - 1 or s[i] != s[i + 1]:
                groups[s[i]].append(cnt)
                cnt = 0  # 重置计数器

        ans = 0  # 存储最长特殊子字符串的长度
        # 遍历每个字母的列表
        for a in groups.values():
            if not a:  # 如果列表为空，即该字符未出现，跳过
                continue
            a.sort(reverse=True)  # 将列表按长度降序排序

            # 计算可能的最长特殊子字符串长度，并更新 ans
            # 如果列表长度只有一个元素，则考虑减去2的情况
            ans = max(ans, a[0] - 2 if len(a) == 1 else a[1])

        # 如果找到满足条件的子字符串，返回其长度；否则返回-1
        return ans if ans > 0 else -1


# 示例使用
sol = Solution()
print(sol.maximumLength("jicja"))